package com.tan.user.service;

import com.tan.common.domain.user.SysRoleMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tan.common.dto.user.RoleMenuDTO;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 角色和菜单关联表 服务类
 * </p>
 *
 * @author Tan
 * @since 2025-01-27
 */
public interface ISysRoleMenuService extends IService<SysRoleMenu> {

    /**
     * @param [menuId]
     * @author Tan-Bowen
     * @description 当前菜单绑定的角色
     * @date 2025/2/17 15:48
     */
    List<SysRoleMenu> byMenu(Long menuId);

    /**
     * @param [roleId]
     * @author Tan-Bowen
     * @description 当前角色绑定的菜单
     * @date 2025/2/17 15:48
     */
    List<SysRoleMenu> byRole(Long roleId);

    List<SysRoleMenu> byRole(List<Long> ids);

    /**
     * @param [userId]
     * @author Tan-Bowen
     * @description 当前菜单绑定的角色ids
     * @date 2025/2/17 15:49
     */
    List<Long> rolesByMenu(Long menuId);

    /**
     * @param [roleId]
     * @author Tan-Bowen
     * @description 当前菜单绑定的角色ids
     * @date 2025/2/17 15:49
     */
    List<Long> menusByRole(Long roleId);

    /**
     * @param [ids]
     * @author Tan-Bowen
     * @description 根据角色IDS 获取菜单滴
     * @date 2025/2/17 16:03
     */
    Set<Long> rolesByMenu(List<Long> ids);

    /**
     * @param [roleId]
     * @author Tan-Bowen
     * @description
     * @date 2025/2/20 15:50
     */
    void delByRole(Long roleId);

    /**
     * @param [roleMenuDTO]
     * @author Tan-Bowen
     * @description 批量插入
     * @date 2025/2/20 15:55
     */
    void insertBatch(RoleMenuDTO roleMenuDTO);
}
